package cn.drenal.capcap.service;

import cn.drenal.capcap.entity.Comment;
import cn.drenal.capcap.entity.vo.CommentListVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 评论服务接口
 */
public interface CommentService extends IService<Comment> {
    /**
     * 创建评论
     *
     * @param comment 评论信息
     * @return 创建结果
     */
    Comment createComment(Comment comment);

    /**
     * 更新评论
     *
     * @param id 评论ID
     * @param comment 评论信息
     * @return 更新结果
     */
    Comment updateComment(Long id, Comment comment);

    /**
     * 删除评论
     *
     * @param id 评论ID
     */
    void deleteComment(Long id);

    /**
     * 根据ID查询评论
     *
     * @param id 评论ID
     * @return 评论信息
     */
    Comment getCommentById(Long id);

    /**
     * 分页查询评论列表
     *
     * @param page 分页参数
     * @param content 评论内容（可选）
     * @param artworkName 作品名称（可选）
     * @param username 用户名（可选）
     * @param status 状态（可选）
     * @return 评论分页列表
     */
    Page<CommentListVO> getCommentPage(Page<Comment> page, String content, String artworkName, String username, Integer status);
    
    /**
     * 审核评论
     *
     * @param id 评论ID
     * @param status 审核状态：0-待审核，1-已通过，2-已拒绝
     * @param remark 审核意见（当状态为已拒绝时必填）
     * @return 更新后的评论
     */
    Comment reviewComment(Long id, Integer status, String remark);
    
    /**
     * 获取作品的评论列表
     *
     * @param artworkId 作品ID
     * @param page 分页参数
     * @return 评论分页列表
     */
    Page<Comment> getCommentsByArtworkId(Long artworkId, Page<Comment> page);
    
    /**
     * 点赞评论
     *
     * @param id 评论ID
     */
    void likeComment(Long id);
}